package cn.supermarket.mapper;

import cn.supermarket.pojo.dto.CategoryUpdateDTO;
import cn.supermarket.pojo.entity.Category;
import cn.supermarket.pojo.vo.CategoryStandardVO;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CategoryMapper {

    /**
     * 添加类别
     * @param category 类别
     * @return 返回受影响的行数
     */
    int addCategory(Category category);


    /**
     *
     * 根据id删除类别信息
     * @param id
     * @return
     */
    int deleteById(Long id);

    /**
     * 根据id修改 是否为父级
     * @param id
     * @param isParent 是否为父级 0=false 1=true
     * @return
     */
    int updateParentById(@Param("id") Long id, @Param("isParent") Integer isParent);

    int updateIsEnableById(@Param("id") Long id, @Param("isEnable") Integer isEnable);

    int updateIsDisplayById(@Param("id") Long id, @Param("isDisplay") Integer isDisplay);

    int updateIsCancelById(@Param("id") Long id, @Param("isCancel") Integer isCancel);

    int updateBasicCategoryInformation(Category category);


    /**
     *
     */
    List<CategoryStandardVO> selectAllCategories();

    /**
     * 根据id查询类别详情
     * @param id 类别id
     * @return 匹配的类别详情，如果没有匹配的数据，则返回null
     */
    CategoryStandardVO getById(Long id);

    CategoryStandardVO getByName(String name);

    List<CategoryStandardVO> listByParentId(Long parentId);

    /**
     * 根据父级id统计包含的子类的个数
     * @param parentId 父级id
     * @return 统计的个数
     */
    int countByParentId(Long parentId);


}
